package com.vhall.component.entity.room.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.vhall.component.entity.room.enums.RoomAuditStatusEnum;
import com.vhall.component.entity.subject.enums.StatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 房间表实体类
 *
 * @author CodeGenerator
 * @date 2021-04-15 17:24:05
 */
@Data
@TableName("rooms")
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel(value = "RoomsEntity对象", description = "房间表")
public class RoomsEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "房间id")
    @TableId(value = "il_id", type = IdType.AUTO)
    private Integer ilId;

    @ApiModelProperty(value = "PAAS直播房间id")
    @TableField("room_id")
    private String roomId;

    @ApiModelProperty(value = "房间标题")
    @TableField("`subject`")
    private String subject;

    @ApiModelProperty(value = "频道id")
    @TableField("page_channel_id")
    private Integer pageChannelId;

    @ApiModelProperty(value = "用户id")
    @TableField("account_id")
    private Integer accountId;

    @ApiModelProperty(value = "PAAS互动房间id")
    @TableField("inav_id")
    private String inavId;

    @ApiModelProperty(value = "PAAS频道ID")
    @TableField("channel_id")
    private String channelId;

    @ApiModelProperty(value = "PAAS通知频道ID")
    @TableField("nify_channel")
    private String nifyChannel;

    @ApiModelProperty(value = "默认回放id")
    @TableField("record_id")
    private String recordId;

    @ApiModelProperty(value = "预计开始时间")
    @TableField("start_time")
    private LocalDateTime startTime;

    @ApiModelProperty(value = "开始时间时间戳")
    @TableField("begin_time_stamp")
    private Integer beginTimeStamp;

    @ApiModelProperty(value = "直播介绍")
    @TableField("introduction")
    private String introduction;

    @ApiModelProperty(value = "所属列表")
    @TableField("category")
    private Integer category;

    @ApiModelProperty(value = "封面图片地址")
    @TableField("cover_image")
    private String coverImage;

    @ApiModelProperty(value = "标签,多个逗号隔开")
    @TableField("topics")
    private String topics;

    @ApiModelProperty(value = "布局>1|为单视频,2|音频+文档,3|文档+视频")
    @TableField("layout")
    private Integer layout;

    @ApiModelProperty(value = "状态>0|待直播/预约,1|直播中,2|直播结束")
    @TableField("`status`")
    private Integer status;

    @ApiModelProperty(value = "是否删除>0|否,1|是")
    @TableField("is_delete")
    private Integer isDelete;

    @ApiModelProperty(value = "聊天审核 1允许 2阻止")
    @TableField("message_approval")
    private Integer messageApproval;

    @TableField("created_at")
    private LocalDateTime createdAt;

    @TableField("updated_at")
    private LocalDateTime updatedAt;

    @ApiModelProperty(value = "paasAppId")
    @TableField("app_id")
    private String appId;

    @ApiModelProperty(value = "点赞数")
    @TableField("`like`")
    private Integer like;

    @TableField("deleted_at")
    private LocalDateTime deletedAt;

    @ApiModelProperty(value = "直播模式 1 直播 2 假直播 3 点播 4 拉流直播")
    @TableField("live_type")
    private Integer liveType;

    @ApiModelProperty(value = "暖场类型| 0：图片 1：视频   ")
    @TableField("warm_type")
    private Integer warmType;

    @ApiModelProperty(value = "暖场视频id")
    @TableField("warm_vod_id")
    private String warmVodId;

    @ApiModelProperty(value = "讲师名称")
    @TableField("teacher_name")
    private String teacherName;

    @ApiModelProperty(value = "直播开始时间")
    @TableField("begin_live_time")
    private LocalDateTime beginLiveTime;

    @ApiModelProperty(value = "直播结束时间")
    @TableField("end_live_time")
    private LocalDateTime endLiveTime;

    @ApiModelProperty(value = "开启文档>0|未开启,1|已开启")
    @TableField("is_open_document")
    private Integer isOpenDocument;

    @ApiModelProperty(value = "房间模式")
    @TableField("live_mode")
    private Integer liveMode;

    @ApiModelProperty(value = "聊天总数")
    @TableField("message_total")
    private Integer messageTotal;

    @ApiModelProperty(value = "模式>1|助理模式,0|普通模式")
    @TableField("`mode`")
    private Integer mode;

    /**
     * 2 全部观看 0 手机号 4 资金账号  5   普通会员、6白银会员、7黄金会员、8铂金会员
     */
//    @ApiModelProperty(value = "0:登录1:报名 2:默认 3:白名单")
    @ApiModelProperty(value = "2 全部观看 0 手机号 4 资金账号  5   普通会员、6白银会员、7黄金会员、8铂金会员")
    @TableField("limit_type")
    private Integer limitType;

    /**
     * 审核状态:0|待审核,-1|审核驳回,1|审核通过
     */
    @TableField("audit_status")
    private Integer auditStatus;
    /**
     * 房间审核 备注
     */
    @TableField("audit_note")
    private String auditNote;

    @ApiModelProperty(value = "配置扩展")
    @TableField("extend")
    private String extend;

    @TableField(exist = false)
    private Integer total;
    /**
     * 表情限频
     */
    @TableField("gift_frequency")
    private Integer giftFrequency;

    @TableField(value = "watermark_temp_id")
    private Integer watermarkTempId;

    /**
     * 分享简介
     */
    @TableField(value = "share_introduction")
    private String shareIntroduction;

    /**
     * 点播id
     */
    @ApiModelProperty(value = "点播ID")
    @TableField("demand_vod_id")
    private String demandVodId;

    /**
     * 直播横竖屏 1横 2竖
     */
    @TableField("video_type")
    private Integer videoType;

    /**
     * 曝光海报
     */
    @TableField("poster_url")
    private String posterUrl;

    /**
     * 设为热点标记位
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @TableField("hot_status")
    private Integer hotStatus;

    /**
     * 推荐到优理宝首页标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @TableField("recommended_status")
    private Integer recommendedStatus;

    /**
     * 上下架标记，0 关、没上架，1开、上架
     * <p>
     * {@link StatusEnum}
     */
    @TableField("load_or_unload")
    private Integer loadOrUnload;

    /**
     * 置顶标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @TableField("top_status")
    private Integer topStatus;

    /**
     * 审核人
     */
    @TableField("reviewer")
    private Integer reviewer;

    /**
     * 上架时间
     */
    @TableField("load_or_unload_at")
    private LocalDateTime loadOrUnloadAt;

    /**
     * 置顶时间
     */
    @TableField("top_status_at")
    private LocalDateTime topStatusAt;

    @ApiModelProperty(value = "拉流配置ID")
    @TableField("pull_stream_config_id")
    private Integer pullStreamConfigId;

    @ApiModelProperty(value = "拉流状态 1 拉流开始 2 拉流结束")
    @TableField("pull_stream_status")
    private Integer pullStreamStatus;

    @ApiModelProperty(value = "拉流地址")
    @TableField("pull_stream_url")
    private String pullStreamUrl;

    // 以下为 国信新增
    @ApiModelProperty(value = "所属栏目")
    @TableField("column_id")
    private Integer columnId;
    /**
     * 直播类型:
     * 1:投教类,2:投顾类,3:产品类,4:证券研究类
     */
    @ApiModelProperty(value = "直播类型:1:投教类,2:投顾类,3:产品类,4:证券研究类")
    @TableField("live_content_type")
    private Integer liveContentType;
    /**
     * 账户验证: 0:不需账户验证,1:需账户验证 ,用户需要交易登录或绑定资金账号，方可进入直播
     */
    @ApiModelProperty(value = "账户验证")
    @TableField("account_verification")
    private String accountVerification;

    @ApiModelProperty(value = "风险等级")
    @TableField("risk_live")
    private String riskLive;

    @ApiModelProperty(value = "投资期限")
    @TableField("invest_limit")
    private String investLimit;

    @ApiModelProperty(value = "投资品种")
    @TableField("invest_type")
    private String investType;

    @ApiModelProperty(value = "业务权限")
    @TableField("permissions")
    private String permissions;

    @ApiModelProperty(value = "合格投资者要求")
    @TableField("qualified_Investor_Requirements")
    private String qualifiedInvestorRequirements;

    @ApiModelProperty(value = "直播业务分类")
    @TableField("live_business")
    private String liveBusiness;

    @ApiModelProperty(value = "直播来源,从创建人身上获取")
    @TableField("org_code")
    private String orgCode;

    @ApiModelProperty(value = "直播来源,从创建人身上获取")
    @TableField("org_name")
    private String orgName;

    @ApiModelProperty(value = "直播目的")
    @TableField("live_target")
    private String liveTarget;

    @ApiModelProperty(value = "直播欢迎语")
    @TableField("welcom_message")
    private String welcomMessage;

    /**
     * 回放审核状态
     * REJECTION(-1, "审核驳回"),
     * CHECK_PENDING(0, "待审核"),
     * APPROVED(1, "审核通过"),
     * <p>
     * SUBMIT_FOR_APPROVAL(9, "待送审"),
     * <p>
     * {@link RoomAuditStatusEnum}
     */
    @ApiModelProperty(value = "回放审核状态")
    @TableField("playback_status")
    private Integer playbackStatus;

    /**
     * 回放审核备注
     */
    @ApiModelProperty(value = "回放审核备注")
    @TableField("playback_note")
    private String playbackNote;

    /**
     * 业务检查状态
     * REJECTION(-1, "审核驳回"),
     * CHECK_PENDING(0, "待审核"),
     * APPROVED(1, "审核通过"),
     * <p>
     * SUBMIT_FOR_APPROVAL(9, "待送审"),
     * <p>
     * {@link RoomAuditStatusEnum}
     */
    @ApiModelProperty(value = "业务检查状态")
    @TableField("inspection_status")
    private Integer inspectionStatus;

    /**
     * 正式/测试房间标识 测试直播:0,正式直播:1
     */
    @TableField("live_rormal")
    private Integer liveRormal;
    /**
     * OA审核关联,审核 id
     */
    @TableField("review_oa_id")
    private String reviewOaId;

    /**
     * OA审核关联,审核标题
     */
    @TableField("review_oa_name")
    private String reviewOaName;

    /**
     * OA审核关联,审核链接
     */
    @TableField("review_oa_url")
    private String reviewOaUrl;

    @TableField("compliance_check_status")
    private Integer complianceCheckStatus;

    @TableField("compliance_check_note")
    private String complianceCheckNote;

    /**
     * 迁移数据标记 0 新系统数据；1迁移而来的数据
     */
    @TableField("migration")
    private Integer migration;

    /**
     * 观看总人数(该数据为从旧系统迁移汇总而来)
     */
    @TableField("total_number_of_viewers")
    private Integer totalNumberOfViewers;

    /**
     * 观看总次数(该数据为从旧系统迁移汇总而来)
     */
    @TableField("total_number_of_views")
    private Integer totalNumberOfViews;

    /**
     * 从旧系统迁移数据过来的时间
     */
    @TableField("migrate_at")
    private LocalDateTime migrateAt;

    /**
     * 直播入口设置| 0：入口在国信直播间显示, 1：入口不在国信直播间显示
     */
    @TableField(value = "live_inlet")
    private Integer liveInlet;

    /**
     * 是否为付费直播| 0：不是付费直播, 1：是付费直播
     */
    @TableField(value = "is_paid")
    private Integer isPaid;

    /**
     * 付费产品编号
     */
    @TableField(value = "paid_product_code")
    private String paidProductCode;

    /**
     * 付费金额
     */
    @TableField(value = "paid_price")
    private String paidPrice;

    /**
     * 原付费金额
     */
    @TableField(value = "original_price")
    private String originalPrice;

    /**
     * 国信观看用户范围类型| 0：所有用户可见, 1：仅限持仓产品的客户可见,2:指定白名单手机号用户可见
     */
    @TableField(value = "limit_user_scope")
    private Integer limitUserScope;

    /**
     * 回放审核状态(产品类二次审核)
     * REJECTION(-1, "审核驳回"),
     * CHECK_PENDING(0, "待审核"),
     * APPROVED(1, "审核通过"),
     * <p>
     * SUBMIT_FOR_APPROVAL(9, "待送审"),
     * <p>
     * {@link RoomAuditStatusEnum}
     */
    @ApiModelProperty(value = "回放审核状态(产品类二次审核)")
    @TableField("playback_status_second")
    private Integer playbackStatusSecond;

    /**
     * 回放审核备注(产品类二次审核)
     */
    @ApiModelProperty(value = "回放审核备注(产品类二次审核)")
    @TableField("playback_note_second")
    private String playbackNoteSecond;

    /**
     * 审核通知人员
     */
    @TableField(value = "audit_notify_user")
    private String auditNotifyUser;

    /**
     * 合规审核人员编号-用于记录产品类型房间二次审核,通知的合规人员编号
     */
    @TableField(value = "compliance_auditors_code")
    private String complianceAuditorsCode;
}